/* 
对axios进行二次包装
1. 配置通用的基础路径和超时
2. 显示请求进度条
3. 成功返回的数据不再是response, 而直接是响应体数据response.data
4. 统一处理请求错误, 具体请求也可以选择处理或不处理
*/
import axios from 'axios'
import store from '@/store'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'

// 配置不显示右上角的旋转进度条, 只显示水平进度条
NProgress.configure({ showSpinner: false }) 
// console.log(process.env)
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_URL + '/api', // 基础路径
  timeout: 15000   // 连接请求超时时间
})

service.interceptors.request.use((config) => {
  // 显示请求中的水平进度条
  NProgress.start()
  config.headers.withCredentials = true
  config.headers.Accept = 'application/json'
  // if (store.state.detail.uuid_token) {
  //   config.headers.userTempId = store.state.detail.uuid_token
  // }
  let token = localStorage.getItem('token') || ''
  if (token) {
    config.headers.Authorization = 'Bearer ' + token
  }
  // 必须返回配置对象
  return config
})

service.interceptors.response.use((response) => {
  // 隐藏进度条
  NProgress.done()
  if (response.data.message == '未登陆') {
    location.href = '/#/login'
  }
  // 返回响应体数据
  return response.data
}, (error) => {
  // 隐藏进度条
  NProgress.done()
  if (error.response.status == 401) {
    location.href = '/#/login'
  }
  console.log('error', error, error.response.status)
  // 统一处理一下错误
  // alert( `请求出错: ${error.message||'未知错误'}`)

  // 后面可以选择不处理或处理
  return Promise.reject(error)
})

export default service
